﻿//ICandleBuilderContainer.cs
//Copyright (c) 2013 StockSharp LLC, all rights reserved.
//This code module is part of StockSharp library.
//This code is licensed under the GNU GENERAL PUBLIC LICENSE Version 3.
//See the file License.txt for the license details.
//More info on: http://stocksharp.com

namespace StockSharp.Algo.Candles.Compression
{
	using System;
	using System.Collections.Generic;

	/// <summary>
	/// Интерфейс контейнера, хранящего данные.
	/// </summary>
	public interface ICandleBuilderContainer
	{
		/// <summary>
		/// Время хранения <see cref="ICandleBuilderSourceValue"/> в памяти. По-умолчанию равно нулю (хранение отсутствует).
		/// </summary>
		TimeSpan ValuesKeepTime { get; set; }

		/// <summary>
		/// Известить контейнер для начале получения данных для серии.
		/// </summary>
		/// <param name="series">Серия свечек.</param>
		/// <param name="from">Начальная дата, с которой будут получаться данные.</param>
		/// <param name="to">Конечная дата, до которой будут получаться данные.</param>
		void Start(CandleSeries series, DateTime from, DateTime to);

		/// <summary>
		/// Добавить данные для свечки.
		/// </summary>
		/// <param name="series">Серия свечек.</param>
		/// <param name="candle">Свечка, для которой нужно добавить данные.</param>
		/// <param name="value">Новые данные.</param>
		void AddValue(CandleSeries series, Candle candle, ICandleBuilderSourceValue value);

		/// <summary>
		/// Получить все данные по свечке.
		/// </summary>
		/// <param name="series">Серия свечек.</param>
		/// <param name="candle">Свечка, по которой нужно найти данные.</param>
		/// <returns>Найденные данные.</returns>
		IEnumerable<ICandleBuilderSourceValue> GetValues(CandleSeries series, Candle candle);
	}
}